package org.forever.util
{
	/**
	* 基于位置接口实现的双向链表节点类
	*/
	public class DLNode implements Position
	{
		private var _element:Object;//数据对象
		private var _prev:DLNode;//指向前驱节点
		private var _next:DLNode;//指向后继节点
		
		/**************************** 构造函数 ****************************/
		public function DLNode(e:Object,p:DLNode,n:DLNode)
		{
			_element = e;
			_prev = p;
			_next = n;
		}
		
		public function get prev():DLNode
		{
			return _prev;
		}

		public function set prev(value:DLNode):void
		{
			_prev = value;
		}

		public function get next():DLNode
		{
			return _next;
		}

		public function set next(value:DLNode):void
		{
			_next = value;
		}

		/**************************** Position接口方法 ****************************/
		//返回存放于该位置的元素
		public function getElem():Object
		{
			return _element;
		}
		
		//将给定元素存放至该位置，返回此前存放的元素
		public function setElem(e:Object):Object
		{
			var _oldE:Object = _element;
			_element = e;
			return _oldE;
		}

		/**************************** 双向链表节点方法 ****************************/
		//找到后继位置
		public function getNext():DLNode
		{ return _next; }
		
		//找到前驱位置
		public function getPrev():DLNode
		{ return _prev; }
		
		//修改后继位置
		public function setNext(newNext:DLNode):void
		{ _next = newNext; }
		
		//修改前驱位置
		public function setPrev(newPrev:DLNode):void
		{ _prev = newPrev; }
	}
}